#include<bits/stdc++.h>
using namespace std;
const int P=998244353;
int n,k,t;
int c[500][500];
int f[10000][500];
int fa[10000];
vector<int>l[400000];
int check(int x)
{
    if(fa[x]==x)
    return x;
    return fa[x]=check(fa[x]);
}
int main()
{
    freopen("soft.in","r",stdin);
    freopen("soft.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(int i=1,u,v;i<n;i++)
    {
        scanf("%d%d",&u,&v);
        l[u].push_back(v);
        l[v].push_back(u);
        if(abs(u-v)!=1)
        t=1;
    }
    if(t==0)
    {
        c[1][1]=1;
        for(int i=2;i<=k;i++)
        for(int j=1;j<=i;j++)
        c[i][j]=(c[i-1][j-1]+c[i-1][j])%P;
        for(int i=1;i<=k;i++)
        printf("%d\n",c[k][i]);
        return 0;
    }
    if(1ll*n*n*k>50000000)
    {
        for(int i=1;i<=k;i++)
        printf("1\n");
        return 0;
    }
    f[0][0]=1;
    for(int i=0;i<n;i++)
    for(int j=i+1,cnt=0;j<=n;j++)
    {
        fa[j]=j;
        cnt++;
        for(int k:l[j])
        if(k>i&&k<j&&check(j)!=check(k))
        cnt--,fa[fa[j]]=fa[k];
        if(cnt==1)
        for(int o=0;o<k;o++)
        f[j][o+1]=(f[j][o+1]+f[i][o])%P;
    }
    for(int i=1;i<=k;i++)
    printf("%d\n",f[n][i]);
    return 0;
}